﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections;

namespace ThanhNienSite
{
    public class ReverserClass : IComparer
    {

        // Calls CaseInsensitiveComparer.Compare with the parameters reversed. 
        int IComparer.Compare(Object x, Object y)
        {
            return ((new CaseInsensitiveComparer()).Compare(y, x));
        }

    }

    public class define
    {
        public static readonly string[] Subjects = { "Phần 'R' (Thực tế)",
                                                "Phần 'I' (Nghiên cứu)", 
                                                "Phần 'A' (Nghệ thuật)", 
                                                "Phần 'S' (Xã hội)", 
                                                "Phần 'E' (Kinh doanh)", 
                                                "Phần 'C' (Quy củ)"
                                            };

        public static IList<SubjectCareer> SubjectCareers
        {
            get
            {
                return new List<SubjectCareer> 
                { 
                    new SubjectCareer { SubjectName = Subjects[0],
                        Footer = Footers[0],
                        Questions = Realistics.Select(x => new QuestionCareer {
                                            Description = x }).ToList()
                    },
                    new SubjectCareer { SubjectName = Subjects[1],
                        Footer = Footers[1],
                        Questions = Investigative.Select(x => new QuestionCareer {
                                            Description = x }).ToList()
                    },
                    new SubjectCareer { SubjectName = Subjects[2],
                        Footer = Footers[2],
                                        Questions = Artistic.Select(x => new QuestionCareer {
                                            Description = x }).ToList()
                    },
                    new SubjectCareer { SubjectName = Subjects[3],
                         Footer = Footers[3],
                                       Questions = Social.Select(x => new QuestionCareer {
                                            Description = x }).ToList()
                    },
                    new SubjectCareer { SubjectName = Subjects[4],
                        Footer = Footers[4],
                                        Questions = Enterprise.Select(x => new QuestionCareer {
                                            Description = x }).ToList()
                    },
                    new SubjectCareer { SubjectName = Subjects[5],
                        Footer = Footers[5],
                                        Questions = Conventional.Select(x => new QuestionCareer {
                                            Description = x }).ToList()
                    }
                };
            }
        }

        public static readonly string[] Results = { "Ngành nghề phù hợp với nhóm này bao gồm: các ngành về kỹ thuật; nông nghiệp, thủy lợi, lâm nghiệp; dầu khí; giao thông vận tải; quản lý đất đai, môi trường; quản lý công nghiệp; điều khiển máy móc thiết bị, lái xe; bảo hộ và an toàn lao động; cảnh sát; thể dục thể thao; các ngành nghề thủ công …",
                                                "Ngành nghề phù hợp với nhóm này bao gồm: các ngành về khoa học tự nhiên;  khoa học xã hội; y – dược; toán học; thống kê; khảo cổ; công nghệ thông tin; kinh tế học; mang tính nghiên cứu hoặc thí nghiệm …", 
                                                "Ngành nghề phù hợp với này bao gồm : các ngành về văn chương; báo chí (bình luận viên, dẫn chương trình…); điện ảnh; sân khấu; mỹ thuật; ca nhạc; múa; kiến trúc; thời trang; hội hoạ …", 
                                                "Ngành nghề phù hợp với nhóm này bao gồm: các ngành về sư phạm (giáo viên mầm non, tiểu học, dạy nghề, thể thao …); huấn luyện viên; tư vấn; hoạt động xã hội …", 
                                                "Ngành nghề phù hợp với nhóm này bao gồm: các ngành về quản trị kinh doanh; thương mại; marketing; dịch vụ khách hàng, báo chí (phóng viên, biện tập viên …); luật (luật sư, trợ lý pháp luật …)", 
                                                "Ngành nghề phù hợp với nhóm này bao gồm: Các ngành về hành chánh, quản trị văn phòng; kế toán, kiểm toán; thư ký …"
                                            };

        public static readonly string[] Footers = { "<b>R (Realistic)</b>: Người thuộc nhóm “sở thích nghề nghiệp” này thường có khả năng về kỹ thuật, công nghệ, hệ thống; ưa thích làm việc với đồ vật, máy móc, động, thực vật; thích làm các công việc ngoài trời.",
                                                "<b>I (Investigative)</b>: Người thuộc nhóm “sở thích nghề nghiệp” này thường có khả năng về quan sát, khám phá, phân tích đánh giá và giải quyết các vấn đề.", 
                                                "<b>A (Artistic)</b>: Người thuộc nhóm “sở thích nghề nghiệp” này thường có khả năng về nghệ thuật, trực giác, khả năng tưởng tượng cao, thích làm việc trong các môi trường mang tính ngẫu hứng, không khuôn mẫu.", 
                                                "<b>S (Social)</b>: Người thuộc nhóm “sở thích nghề nghiệp” này thường có khả năng về ngôn ngữ, giảng giải, thích làm việc với con người, thích trợ giúp, đào tạo.", 
                                                "<b>E (Enterprise)</b>: Người thuộc nhóm “sở thích nghề nghiệp” này thường có khả năng về kinh doanh, mạnh bạo, dám nghĩ dám làm, có thể gây ảnh hưởng, thuyết phục người khác; có khả năng quản lý.", 
                                                "<b>C (Conventional)</b>: Người thuộc nhóm “sở thích nghề nghiệp” này thường có khả năng về số học, thích thực hiện những công việc chi tiết, thích làm việc với dữ liệu hoặc thích làm theo chỉ dẫn của người khác, thích làm các công việc văn phòng."
                                            };

        public static readonly string[] Realistics = {
                                                "Có tính tự lập",
                                                "Có đầu óc thực tế",
                                                "Dễ thích nghi, linh động",
                                                "Vận hành máy móc, thiết bị",
                                                "Làm các công việc thủ công",
                                                "Tiếp xúc với thiên nhiên, động, thực vật",
                                                "Làm các công việc mang tính thực hành",
                                                "Thấy được kết quả công việc", 
                                                "Làm việc ngoài trời"
                                            };

        public static readonly string[] Investigative = {
                                                "Tính tìm hiểu, khám phá", 
                                                "Có đầu óc phân tích", 
                                                "Tính logic", 
                                                "Quan sát, phản ánh, nghiên cứu", 
                                                "Tổng hợp, khái quát, suy diễn", 
                                                "Điều tra, phân loại, kiểm tra đánh giá", 
                                                "Tự tổ chức công việc", 
                                                "Thực hiện những vấn đề phức tạp", 
                                                "Khả năng giải quyết các vấn đề"
                                            };

        public static readonly string[] Artistic = {
                                                "Dễ xúc động", 
                                                "Có óc tưởng tượng", 
                                                "Tính tự do, không khuôn mẫu, bốc đồng", 
                                                "Trình diễn, diễn xuất", 
                                                "Có thế chụp ảnh, vẽ, trang trí, điêu khắc", 
                                                "Năng khiếu âm nhạc", 
                                                "Khả năng viết, trình bày ý tưởng", 
                                                "Sáng tạo ý tưởng, chương trình… mới", 
                                                "Thỏa mái biểu lộ ý thích riêng"
                                            };

        public static readonly string[] Social = {
                                                "Tính thân thiện, giúp đỡ người khác", 
                                                "Thích gặp gỡ, làm việc với con người", 
                                                "Lịch thiệp, tử tế", 
                                                "Khuyên bảo, huấn luyện, giảng giải", 
                                                "Lắng nghe và sẵn sàng phục vụ", 
                                                "Chăm sóc sức khỏe, phục hồi chức năng", 
                                                "Hoạt động vì mục tiêu xã hội, cái chung", 
                                                "Đóng góp để thế giới tốt đẹp hơn", 
                                                "Khả năng hòa giải, giải quyết sự việc"
                                            };

        public static readonly string[] Enterprise = {
                                                "Tính phiêu lưu, mạo hiểm", 
                                                "Tính quyết đoán", 
                                                "Năng động", 
                                                "Diễn đạt, tranh luận, thuyết phục", 
                                                "Quản lý, chỉ đạo, xem xét, đánh giá", 
                                                "Đặt ra mục tiêu, kế hoạch và quyết định", 
                                                "Gây ảnh hưởng đối với người khác", 
                                                "Cạnh tranh, vượt lên người khác", 
                                                "Được sự kính trọng, vị nể"
                                            };

        public static readonly string[] Conventional = {
                                                "Có đầu óc tổ chức, sắp xếp, ngăn nắp", 
                                                "Cẩn thận, tỉ mỉ", 
                                                "Chu đáo, chính xác, đáng tin cậy", 
                                                "Tính toán, so sánh, ghi chép số liệu", 
                                                "Lưu trữ, phân loại, cập nhật thông tin", 
                                                "Dự kiến về chi tiêu, ngân sách", 
                                                "Làm công việc có nhiệm vụ rõ ràng", 
                                                "Lên kế hoạch, điều phối công việc", 
                                                "Làm việc với con số, theo các quy định"
                                            };
    }

    public class SubjectCareer
    {
        public string SubjectName { get; set; }
        public string Footer { get; set; }
        public int SubTotal;

        private IList<QuestionCareer> _questions;
        public IList<QuestionCareer> Questions
        {
            get
            {
                return _questions;
            }
            set
            {
                _questions = value;
            }
        }
    }

    public class QuestionCareer
    {

        public string Description { get; set; }

        private bool[] _checkArray;
        public bool FirstCheck
        {
            get
            {
                return _checkArray[0];
            }
            set
            {
                if (_checkArray[0] != value)
                {
                    _checkArray[0] = value;
                    SumTotal();
                }
            }
        }
        public bool SecondCheck
        {
            get
            {
                return _checkArray[1];
            }
            set
            {
                if (_checkArray[1] != value)
                {
                    _checkArray[1] = value;
                    SumTotal();
                }
            }
        }
        public bool ThirdCheck
        {
            get
            {
                return _checkArray[2];
            }
            set
            {
                if (_checkArray[2] != value)
                {
                    _checkArray[2] = value;
                    SumTotal();
                }
            }
        }
        public bool FourthCheck
        {
            get
            {
                return _checkArray[3];
            }
            set
            {
                if (_checkArray[3] != value)
                {
                    _checkArray[3] = value;
                    SumTotal();
                }
            }
        }
        public bool FifthCheck
        {
            get
            {
                return _checkArray[4];
            }
            set
            {
                if (_checkArray[4] != value)
                {
                    _checkArray[4] = value;
                    SumTotal();
                }
            }
        }
        public int Total { get; set; }

        public QuestionCareer()
        {
            _checkArray = new bool[] { true, false, false, false, false };
            Total = 1;
        }

        void ResetBoolean(params int[] indexes)
        {
            foreach (var item in indexes)
            {
                _checkArray[item] = false;
            }
        }

        void SumTotal()
        {
            Total = FindTrue();
        }

        int FindTrue()
        {
            for (int i = 0; i < _checkArray.Length; i++)
            {
                if (_checkArray[i]) return i + 1;
            }
            return 0;
        }
    }
}